/**
 * ControlPanel.java
 *
 * Copyright (c) 2013-2016, F(X)yz
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 *     * Neither the name of F(X)yz, any associated website, nor the
 * names of its contributors may be used to endorse or promote products
 * derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL F(X)yz BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */ 

package org.fxyz3d.controls;

import javafx.beans.property.ObjectProperty;
import javafx.collections.ObservableList;
import javafx.geometry.Pos;
import javafx.scene.control.TitledPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;

/**
 *
 * @author Jason Pollastrini aka jdub1581
 */
public class ControlPanel extends VBox{

    public ControlPanel() {
        this.accordion = new ControlBasePane();
        VBox.setVgrow(accordion, Priority.ALWAYS);
        this.rootCategory = new ControlCategory("");
        this.accordion.getPanes().add(rootCategory);
        this.accordion.setExpandedPane(rootCategory);
        this.getChildren().add(accordion);
        this.setAlignment(Pos.CENTER);
    }
    
    private final ControlCategory rootCategory;
    private final ControlBasePane accordion;

    public ControlPanel(ControlCategory cat) {
        this();
        this.accordion.getPanes().clear();
        this.accordion.getPanes().add(cat);
        
    }

    public final TitledPane getExpandedPane() {
        return accordion.getExpandedPane();
    }

    public final void setExpandedPane(TitledPane value) {
        accordion.setExpandedPane(value);
    }

    public final ObjectProperty<TitledPane> expandedPaneProperty() {
        return accordion.expandedPaneProperty();
    }

    public final ObservableList<TitledPane> getPanes() {
        return accordion.getPanes();
        
    }
    
    public final void addToRoot(StackPane control){
        this.rootCategory.addControl(control);
    }
    
    public final void addToRoot(StackPane ... control){
        this.rootCategory.addControls(control);
    }
}
